from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtWidgets import QWidget, QListWidgetItem, QLabel
from PyQt5 import QtCore

class Icon:
    Decrypt_Icon = QIcon()
    Contact_Icon = QIcon()
    Home_Icon = QIcon()
    
from .pc_decrypt import DecryptControl
from .setting.setting import SettingControl
from .get_bias_addr.get_bias_addr import GetBiasAddrControl
from .toolUI import Ui_Dialog

# --- 全新的美化样式表 ---
# 灵感来源于您的第二张UI图，采用现代、简洁的设计风格
Stylesheet = """
/* 全局背景和字体 */
QWidget, QDialog {
    background-color: #F5F7FA; /* 浅灰色背景，类似第二张图 */
    font-family: "Microsoft YaHei", "微软雅黑"; /* 统一字体 */
}

/* 顶部导航栏样式 */
QListWidget {
    background-color: #FFFFFF; /* 白色背景 */
    border: none;
    border-bottom: 1px solid #E4E7ED; /* 底部加一条细线分割 */
    outline: 0px;
}
QListWidget::item {
    padding: 12px 20px; /* 增加内边距 */
    color: #606266; /* 普通状态文字颜色 */
    font-size: 14px;
    border: none;
    background-color: transparent; /* 透明背景 */
}
QListWidget::item:hover {
    background-color: #ECF5FF; /* 鼠标悬浮颜色 */
    color: #409EFF;
}
QListWidget::item:selected {
    color: #409EFF; /* 选中项文字颜色 */
    font-weight: bold;
    border-bottom: 2px solid #409EFF; /* 选中项底部蓝色指示条 */
    background-color: #FFFFFF; /* 选中时背景保持白色 */
}

/* 堆栈窗口区域 */
QStackedWidget {
    background-color: #F5F7FA; /* 确保内容区域背景色一致 */
}

/* 卡片式容器样式 */
QWidget#Card {
    background-color: #FFFFFF;
    border-radius: 8px;
    border: 1px solid #EBEEF5;
    padding: 15px;
}

/* 标签样式 */
QLabel {
    background: transparent;
    color: #606266; /* 默认标签颜色 */
    font-size: 14px;
}
QLabel#TitleLabel {
    color: #303133;
    font-size: 24px;
    font-weight: bold;
    padding-bottom: 5px;
}
QLabel#SubtitleLabel {
    color: #909399;
    font-size: 14px;
    padding-bottom: 15px;
}
QLabel#ResultLabel {
    color: #303133;
    font-size: 14px;
    padding: 5px;
    border: 1px solid #DCDFE6;
    border-radius: 4px;
    background-color: #F5F7FA;
}


/* 按钮样式 */
QPushButton {
    min-height: 36px;
    border-radius: 4px;
    padding: 0 15px;
    font-size: 14px;
    color: #606266;
    background-color: #FFFFFF;
    border: 1px solid #DCDFE6;
}
QPushButton:hover {
    color: #409EFF;
    border-color: #C6E2FF;
    background-color: #ECF5FF;
}
QPushButton:pressed {
    color: #3A8EE6;
    border-color: #3A8EE6;
}

/* 主操作按钮 (例如 "开始启动") */
QPushButton#PrimaryButton {
    color: #FFFFFF;
    background-color: #409EFF;
    border: 1px solid #409EFF;
}
QPushButton#PrimaryButton:hover {
    background-color: #66B1FF;
    border-color: #66B1FF;
}
QPushButton#PrimaryButton:pressed {
    background-color: #3A8EE6;
    border-color: #3A8EE6;
}

/* 输入框样式 */
QLineEdit {
    min-height: 36px;
    border: 1px solid #DCDFE6;
    border-radius: 4px;
    padding: 0 10px;
    background-color: #FFFFFF;
    font-size: 14px;
}
QLineEdit:focus {
    border-color: #409EFF;
}
QLineEdit:disabled {
    background-color: #F5F7FA;
    color: #C0C4CC;
}

/* 复选框样式 */
QCheckBox::indicator {
    width: 20px;
    height: 20px;
}
QCheckBox::indicator:unchecked {
    image: url(:/icons/unchecked.png); /* 需提供未选中图标 */
}
QCheckBox::indicator:checked {
    image: url(:/icons/checked.png); /* 需提供选中图标，如一个绿色的勾 */
}

/* 进度条样式 */
QProgressBar {
    min-height: 12px;
    border-radius: 6px;
    text-align: center;
    color: white;
    background-color: #EBEEF5;
}
QProgressBar::chunk {
    background-color: #67C23A; /* 绿色进度 */
    border-radius: 6px;
}
"""

class ToolWindow(QWidget, Ui_Dialog):
    get_info_signal = pyqtSignal(str)
    decrypt_success_signal = pyqtSignal(bool)
    load_finish_signal = pyqtSignal(bool)

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.setStyleSheet(Stylesheet) # 应用全新样式表
        self.init_ui()
        self.load_finish_signal.emit(True)

    def init_ui(self):
        self.listWidget.clear()
        self.listWidget.currentRowChanged.connect(self.setCurrentIndex)
        
        # 为了美观，可以调整图标大小
        self.listWidget.setIconSize(QtCore.QSize(20, 20))
        
        # 添加导航项
        chat_item = QListWidgetItem(Icon.Decrypt_Icon, '解密', self.listWidget)
        contact_item = QListWidgetItem(Icon.Contact_Icon, '设置', self.listWidget)
        myinfo_item = QListWidgetItem(Icon.Home_Icon, '版本信息', self.listWidget) # 修改名称为更清晰的“版本信息”
        tool_item = QListWidgetItem(Icon.Home_Icon, '关于', self.listWidget) # 修改为“关于”

        # 实例化各个页面
        self.decrypt_window = DecryptControl()
        self.decrypt_window.get_wxidSignal.connect(self.get_info_signal)
        self.decrypt_window.DecryptSignal.connect(self.decrypt_success_signal)
        self.decrypt_window.versionErrorSignal.connect(self.show_decrypt2)
        self.stackedWidget.addWidget(self.decrypt_window)

        setting_window = SettingControl()
        self.stackedWidget.addWidget(setting_window)

        self.get_bias_addr_window = GetBiasAddrControl()
        self.get_bias_addr_window.biasAddrSignal.connect(self.decrypt)
        self.stackedWidget.addWidget(self.get_bias_addr_window)

        label = QLabel('这是一个关于页面。\n项目信息可以写在这里。', self)
        label.setFont(QFont("微软雅黑", 20))
        label.setAlignment(Qt.AlignCenter)
        self.stackedWidget.addWidget(label)
        
        # 默认选中第一个
        self.listWidget.setCurrentRow(0)
        self.stackedWidget.setCurrentIndex(0)

    def decrypt(self, version_list):
        self.listWidget.setCurrentRow(0)
        self.stackedWidget.setCurrentIndex(0)
        self.decrypt_window.version_list = version_list
        self.decrypt_window.get_info()

    def show_decrypt2(self, version):
        self.listWidget.setCurrentRow(2) # 导航到 "版本信息" 页面
        self.stackedWidget.setCurrentIndex(2)

    def setCurrentIndex(self, row):
        self.stackedWidget.setCurrentIndex(row)